//
//  StdSet.h
//  CollectionTest
//
//  Created by Dusan Vujosevic on 2013-10-25.
//  Copyright (c) 2013 Suavetech. All rights reserved.
//

#ifndef __CollectionTest__StdUnorderedSet__
#define __CollectionTest__StdUnorderedSet__

#include <unordered_set>
#include "CollectionBase.h"

typedef std::unordered_set<elemType> myOSet;
typedef std::unordered_set<elemType>::iterator myOSetIterator;

class StdUnorderedSet: public CollectionBase
{
public:
	StdUnorderedSet(size_t elemCountHint): CollectionBase(elemCountHint) {}

	virtual const char* name() const { return "std::unordered_set"; }
	
	// Initialization, optional
	virtual bool init();
	
	// Reset, return to intial (clean) state, mandatory
	virtual void reset();

	// Load the collection, mandatory, timed
	virtual void loadElements(const void* randBytes, size_t randBytesSize);
	
	// Random search, mandatory, timed
	virtual bool findElement(elemType elem);
	
private:
	myOSet _set;
	myOSetIterator _setIterator;
};

#endif /* defined(__CollectionTest__StdUnorderedSet__) */
